package main

import (
	"gin_firt_web_demo/controller"
	"gin_firt_web_demo/interceptor"
	"gin_firt_web_demo/utils/logger"
	"github.com/gin-gonic/gin"
	"github.com/sirupsen/logrus"
)

// 定义一个 Gin Logger 结构体
type GinLogger struct {
	logger *logrus.Logger
}

// 实现 io.Writer 接口
func (g *GinLogger) Write(p []byte) (n int, err error) {
	g.logger.Info(string(p))
	return len(p), nil
}

func init() {
	// 使用默认Gin日志打印，需要注释掉
	logger.New("sany-scada")
}

func main() {
	// 1. 创建gin的服务
	ginServer := gin.New()

	// 2. 注册自定义的日志记录器【对所有的接口记录请求与响应日志】
	ginServer.Use(interceptor.LoggerMiddleware())

	// 3. 将gin默认打印的日志输出到自定义的日志文件
	gin.DefaultWriter = &GinLogger{logger: logrus.WithField("KEY", "GIN").Logger}

	// 4. 接口服务
	controller.UserController(ginServer)

	// 5. 打开服务器端口
	ginServer.Run(":8080")

}
